home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-06-16 | 1.4 KB | 52 lines | [TEXT/MPS ] |
- /*
- Mapping RGB Triples onto Four Bits
- by Alan Paeth
- from "Graphics Gems", Academic Press, 1990
- */
-
- remap8(R, G, B, R2, G2, B2)
- float R, G, B, *R2, *G2, *B2;
- {
- /*
- * remap8 maps floating (R,G,B) triples onto quantized
- * (R2,B2,B2) triples and returns the code (vertex)
- * value/color table entry for the quantization. The
- * points (eight) are the vertices of the cube.
- */
- int code;
- *R2 = *G2 = *B2 = 0.0;
- code = 0;
- if (R >= 0.5) { *R2 = 1.0; code |= 1; }
- if (G >= 0.5) { *G2 = 1.0; code |= 2; }
- if (B >= 0.5) { *B2 = 1.0; code |= 4; }
- return(code);
- }
-
- /*
- * remap14 maps floating (R,G,B) triples onto quantized
- * (R2,B2,B2) triples and returns the code (vertex)
- * value/color table entry for the quantization. The
- * points (fourteen) are the vertices of the cuboctahedron.
- */
-
- float rval[] = { 0.,.5 ,.5 , 1.,.0 , 0., 0.,.5,
- .5 , 1., 1., 1., 0.,.5 ,.5 , 1.};
- float gval[] = { 0.,.5 , 0., 0.,.5 , 1., 0.,.5,
- .5 , 1., 0.,.5 , 1., 1.,.5 , 1.};
- float bval[] = { 0., 0.,.5 , 0.,.5 , 0., 1.,.5,
- .5 , 0., 1.,.5 , 1.,.5 , 1., 1.};
-
- int remap14(R, G, B, R2, G2, B2)
- float R, G, B, *R2, *G2, *B2;
- {
- int code = 0;
- if ( R + G + B > 1.5) code |= 8;
- if (-R + G + B > 0.5) code |= 4;
- if ( R - G + B > 0.5) code |= 2;
- if ( R + G - B > 0.5) code |= 1;
- *R2 = rval[code];
- *G2 = gval[code];
- *B2 = bval[code];
- return(code);
- }
-